package editor.cn;
class Solution53{
    public static void main(String[] args) {
        Solution solution = new Solution53().new Solution();
    }
    //leetcode submit region begin(Prohibit modification and deletion)
class Solution {
    public int maxSubArray(int[] nums) {
        //方法1：贪心
        //return tanxin(nums);
        //方法2：dp
        return dp(nums);
    }

        private int dp(int[] nums) {
            return 0;
        }

        private int tanxin(int[] nums) {
            int n= nums.length;
            int maxSub= nums[0];//这里的初始化也很重要，都是nums[0]
            int currentSum= nums[0];
            for (int i = 1; i < n; i++) {//这里一定要写成i=1，因为前面的已经赋值了。负责在只有一个元素的情况下会重复计数。
                currentSum=Math.max(nums[i], nums[i]+currentSum);//这里就直接确定了小于0的子串直接舍弃了。
                maxSub=Math.max(maxSub,currentSum);//更新之前的子串与现在的子串大小。
            }
            return maxSub;
        }
    }
//leetcode submit region end(Prohibit modification and deletion)
}












